/*
 * 创建时间：2015年8月11日
 */
package com.tuanzi.loan.workflow.service;

import java.util.List;
import java.util.Map;

import com.tuanzi.loan.workflow.entity.ScriptTask;
import com.tuanzi.loan.workflow.entity.ScriptTaskType;

/**
 * @author Ray
 * @date 2018/01/16
 */
public interface ScriptTaskService {

	Object runScript(ScriptTask scriptTask, Map<String, Object> parameters);

	Object runScript(ScriptTask scriptTask, Map<String, Object> parameters, String scriptLanguage);

	Boolean checkGroovyScript(String scriptContent);

	//
	// /**
	// * @param request
	// * @return
	// */
	// BaseResponse<ScriptTaskResponse> getScriptTaskVO(ScriptTaskQueryRequest
	// request);
	//
	// /**
	// * @param request
	// */
	// BaseResponse<String> deleteAndsaveScriptTask(ScriptTaskSaveRequest request);
	//
	// BaseResponse<String> saveScriptTask(ScriptTaskSaveRequest request);
	//
	// BaseResponse<String> deleteOldData(ScriptTaskDeleteRequest request);

	/**
	 * 职责：根据流程定义id，获取对应所有的任务脚本对象
	 * 
	 * @param procDefId
	 * @return
	 */
	List<ScriptTask> findAllByProcDefId(String procDefId);

	List<ScriptTask> findAllByProcDefIdAndActivityId(String procDefId, String activityId);

	ScriptTask findByProcDefIdAndActivityIdAndTaskType(String procDefId, String activityId, ScriptTaskType TaskType);

	/**
	 * 职责：同步新旧流程定义的脚本
	 *
	 * @param oldProcDefId
	 * @param newProcDefId
	 */
	void synchronizeScriptTask(String oldProcDefId, String newProcDefId);

	/**
	 * 根据流程定义删除
	 *
	 * @param procDefId
	 * @return
	 */
	void deleteByProcDefId(String procDefId);

	/**
	 * 删除脚本任务
	 * 
	 * @param scriptTask
	 */
	void delete(ScriptTask scriptTask);

	ScriptTask saveOrUpdate(ScriptTask scriptTask);
}
